package kickr.db.dao; import io.dropwizard.hibernate.AbstractDAO; import java.util.List; import kickr.db.entity.Player; import org.hibernate.SessionFactory; import org.hibernate.criterion.MatchMode; import org.hibernate.criterion.Restrictions; public class PlayerDAO extends AbstractDAO<Player> { public PlayerDAO(SessionFactory sessionFactory) { super(sessionFactory); } public void create(Player player) { persist(player); } public void createPlayerIfNotExists(Player player) { if (findPlayerByAlias(player.getAlias()) == null) { create(player); } } @SuppressWarnings("unchecked") public List<Player> findPlayersMatchingNameOrAlias(String part) { return criteria().add( Restrictions.or( Restrictions.ilike("name", part, MatchMode.ANYWHERE), Restrictions.ilike("alias", part, MatchMode.ANYWHERE))) .list(); } public Player findPlayerByAlias(String alias) { return (Player) criteria().add(Restrictions.eq("alias", alias)).uniqueResult(); } }